package com.hawk.eye.framework.utils;

import com.hawk.eye.common.utils.StringUtil;
import com.hawk.eye.framework.exception.HawkEyeServerException;

/**
 * @author: 沉香
 * @date: 2023/2/20
 * @description: 异常工具类
 */
public class ExceptionUtils {

    /**
     * 创建异常
     *
     * @param message
     * @param args    异常message的参数
     * @return BusinessException
     */
    public static HawkEyeServerException error(String message, Object... args) {
        return new HawkEyeServerException(StringUtil.format(message, args));
    }

    /**
     * 断言表达式为true的情况下创建业务异常
     *
     * @param expression 断言的表达式
     * @param args       异常message的参数
     */
    public static void isTrueThrow(boolean expression, String message, Object... args) {
        ExceptionAssert.isTrueThrow(expression, () -> error(message, args));
    }

    /**
     * 断言表达式为false的情况下创建业务异常
     *
     * @param expression 断言的表达式
     * @param args       异常message的参数
     */
    public static void isFalseThrow(boolean expression, String message, Object... args) {
        ExceptionAssert.isFalseThrow(expression, () -> error(message, args));
    }

    /**
     * 断言值为Empty的情况下创建业务异常
     *
     * @param value 断言的值
     * @param args  异常message的参数
     */
    public static void isEmptyThrow(Object value, String message, Object... args) {
        ExceptionAssert.isEmptyThrow(value, () -> error(message, args));
    }

    /**
     * 断言值不为Empty的情况下创建业务异常
     *
     * @param value 断言的值
     * @param args  异常message的参数
     */
    public static void isNotEmptyThrow(Object value, String message, Object... args) {
        ExceptionAssert.isNotEmptyThrow(value, () -> error(message, args));
    }

}
